import axios from "axios"
import { TOKEN_NAME } from "@/util/constant.js"
import { confirmMessage } from "@/util/message.js"

//设置统一的后端请求地址
axios.defaults.baseURL = 'http://localhost:8088'

//编写请求拦截器
axios.interceptors.request.use(function (config){
    //请求发送之前会先执行这里的内容
    //发送token
    const token = localStorage.getItem(TOKEN_NAME)
    if(token){
        //将token放入请求头
        config.headers.Authorization = token
    }
    return config
}, function (error){
    return Promise.reject(error)
})

//编写响应的拦截器
axios.interceptors.response.use(function (response){
    if(response.data.code > 900){
        //弹出确认窗口，是否调整到登录页面
        confirmMessage('登录信息失效，是否调整到登录页面？').then(() => {
            //删除token
            localStorage.removeItem(TOKEN_NAME)
           //调整到登录页面
           window.location.href = '/'
        }).catch(() => {
            //取消后会执行这里
        })
    }else{
        return response
    }
    
}, function (error){
    return Promise.reject(error)
})


// 定义一个POST请求的函数
export const doPost = (url, param) => {
    return axios({
        method: 'post',
        url: url,
        data: param, // 提交的参数数据
        responseType: 'json'
    })
}

//定义get请求的函数
export const doGet = (url, param) => {
    return axios({
        method: 'get',
        url: url,
        params: param, // 提交的参数数据
        responseType: 'json'
    })
}

//定义put请求的函数
export const doPut = (url, param) => {
    return axios({
        method: 'put',
        url: url,
        data: param, // 提交的参数数据
        responseType: 'json'
    })
}

//定义delete请求的函数
export const doDelete = (url, param) => {
    return axios({
        method: 'delete',
        url: url,
        params: param, // 提交的参数数据
        responseType: 'json'
    })
}

//下载操作
export const  doDownload = (url,param) => {
    return axios({
        method: 'get',
        url: url,
        params: param, // 提交的参数数据
        responseType: 'blob'  //设置响应类型是blob，处理二进制数据
    })
}